package io.gitee.wiqer.medium;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 描述
 * 给定一个长度为n的数组nums，数组由一些非负整数组成，现需要将他们进行排列并拼接，每个数不可拆分，使得最后的结果最大，返回值需要是string类型，否则可能会溢出。
 *
 * 数据范围：1 \le n \le 1001≤n≤100，0 \le nums[i] \le 100000≤nums[i]≤10000
 * 进阶：时间复杂度O(nlogn)O(nlogn) ，空间复杂度：O(n)O(n)
 */
public class SolutionNC111_MaxNumber {
    /**
     * 最大数
     * @param nums int整型一维数组
     * @return string字符串
     */
    public String solve (int[] nums) {
        // write code here
        List<String> list=new ArrayList<>();
        for (int i = 0; i < nums.length;i++) {
            list.add(String.valueOf(nums[i]));
        }
        list.sort((s1, s2) ->
                (s1+s2).compareTo(s2+s1)
        );
        StringBuilder sb = new StringBuilder();
        boolean break0=true;
        for (int i = list.size() - 1; i >= 0;i--) {
            if(break0&&list.get(i).replace("0","").equals("")){

            }else{
                break0=false;
                sb.append(list.get(i));
            }

        }
        if(sb.toString().equals("")){
            sb.append("0");
        }
        return sb.toString();
    }
    @Test
    public void test(){
        int[] nums={30,1};
        System.out.println(solve(nums));
    }
}
